package com.hll.mybatis_plus.config;

import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * @author Mr.Hu
 * @since 2021-07-01 10:45
 */
// 扫描我们的 mapper文件夹
@MapperScan("com.hll.mybatis_plus.mapper")
@EnableTransactionManagement
@Configuration
public class MyBatisPlusConfig {
  // 注册乐观锁插件
  @Bean
  public OptimisticLockerInterceptor optimisticLockerInterceptor() {
    return new OptimisticLockerInterceptor();
  }

  // 分页插件
  @Bean
  public PaginationInterceptor paginationInterceptor() {
    return new PaginationInterceptor();
  }

  // 逻辑删除组件
  @Bean
  public ISqlInjector sqlInjector() {
    return new LogicSqlInjector();
  }

  //// SQL执行效率插件
  // @Bean
  // @Profile({"dev", "test"})
  // public PerformanceInterceptor performanceInterceptor() {
  //  PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
  //  performanceInterceptor.setMaxTime(100); // ms 设置sql执行的最大时间，如果超过了则不执行
  //  performanceInterceptor.setFormat(true); // 是否格式化
  //  return performanceInterceptor;
  // }
}
